package demo3多态;
class Animal {
    public String name;
    public int age;
    public Animal(String name,int age) {
        this.name = name;
        this.age = age;
    }
    public void eat() {
        System.out.println(this.name + "正在吃...");
    }
}

class Dog extends Animal {
    private String color;

    public Dog(String name,int age,String color) {
        super(name,age);
        this.color = color;
    }
    public void eat() {
        System.out.println(this.name + "正在吃狗粮...");
    }
    public void barks() {
        System.out.println(this.name + "正在汪汪叫~~");
    }
}

public class Test {
    /**
     * 多态
     * @param args
     *  1.多态的概念
     *  2.多态实现条件
     */
    public static void main(String[] args) {
        /**
         * 多态的实现条件
         *  1.必须在继承体系下
         *  2.子类必须对父类中方法进行重写
         *  3.通过父类的引用调用重写方法
         *
         *  动态绑定: 编译时,父类绑定了自身方法
         *          运行时,父类绑定了子类重写方法
         */
        /**
         * 向上转型
         *  父类引用,引用了子类的对象
         */
        Animal animal = new Dog("小黑",2,"黑色");//向上转型

        animal.eat();
    }
    public static void main1(String[] args) {
        /**
         * 多态的概念
         *  完成某个行为时,不同对象完成时会产生不同的状态
         */
    }
}
